Enterprise storage systems currently available are proprietary storage appliances that integrate the storage controller functions and the storage media into the same physical unit. This centralized model makes it harder to independently scale the storage systems' capacity, performance and cost. Users can get tied to one expensive appliance without the flexibility of adapting it to different application requirements that may change over time. For small and medium scale enterprise, this may require huge upfront capital cost. For larger enterprise datacenters, new storage appliances are added as the storage capacity and performance requirements increase. These operate in silos and impose significant management overheads.
Traditionally storage systems implemented a single-level in-memory (like DRAM) cache indexed by the logical offset of the stored content. The advent of flash-based devices (like SSD), which provides fast random performance at a lower price than DRAM made them a good candidate for multi-tier caching. However, most solutions tend to extend the in-memory caching methods to the flash-based caches, which doesn't bode very well with the later. This is because most flash-based devices have poor random write performance and tend to wear out after a certain number of writes. Finally, even though there exists some solutions to distributed caching, they suffer from caching duplicative contents or require complex cache coherency solutions to ensure consistency across difference cache instances. All of the above reduce the effectiveness (cost and performance) of the distributed multi-tier cache.